// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Nine Casino en ligne – Découvrez jusqu’à 450 € de Bonus incroyable – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Nine Casino en ligne – Découvrez jusqu’à 450 € de Bonus incroyable

Profitez de jusqu’à 450 € de Bonus dès votre inscription. Nine Casino vous offre une expérience de jeu exceptionnelle avec des promotions exclusives.

Connectez-vous dès maintenant avec Nine Casino Login et découvrez les avis des joueurs sur Avis Nine Casino. Ne manquez pas non plus le Code Promo Nine Casino pour des réductions incroyables.

Pour les amateurs de bonus sans dépôt, Nine Casino No Deposit Bonus est une offre incontournable. Rejoignez-nous et vivez l’excitation du Nine Casino dès aujourd’hui!

Bienvenue sur Nine Casino en ligne

Découvrez l’excitation sans fin sur Nine Casino, votre destination ultime pour les amateurs de jeux en ligne. Avec un code bonus Nine Casino exclusif, vous pouvez profiter de promotions incroyables et débloquer jusqu’à 450 € de Bonus. Connectez-vous facilement avec votre Nine Casino login et plongez dans un univers de divertissement de qualité supérieure.

Pour ceux qui cherchent à tester sans risque, le Nine Casino no deposit bonus est une opportunité inoubliable. Consultez les avis Nine Casino pour découvrir ce que les autres joueurs pensent de cette plateforme exceptionnelle. Avec des jeux variés et des offres alléchantes, Nine Casino vous garantit des moments inoubliables.

Jusqu’à 450 € de Bonus pour les nouveaux joueurs

Rejoignez Nine Casino dès aujourd’hui et bénéficiez de jusqu’à 450 € de bonus pour les nouveaux joueurs. Profitez de notre code bonus Nine Casino exclusif pour maximiser vos gains dès votre inscription. Une fois connecté via votre Nine Casino login, vous pourrez accéder à une multitude de jeux passionnants et à des offres incroyables.

Ne manquez pas l’opportunité de profiter d’un Nine Casino no deposit bonus pour tester notre plateforme sans risque. Consultez les avis Nine Casino pour découvrir l’expérience des autres joueurs et faites votre choix en toute confiance. Les avis positifs sur Nine Casino témoignent de notre engagement envers la satisfaction de nos clients.

Pour encore plus d’avantages, utilisez notre code promo Nine Casino lors de votre inscription. C’est le moment idéal pour découvrir tout ce que Nine Casino a à offrir. Rejoignez-nous maintenant et commencez votre aventure de jeu en ligne avec un bonus exceptionnel.

Jeux de casino exclusifs

Découvrez une sélection de jeux de casino exclusifs sur Nine Casino. Profitez de l’offre spéciale de nine casino no deposit bonus pour tester ces jeux avant de jouer avec de l’argent réel. Rejoignez-nous dès maintenant en effectuant un nine casino login pour accéder à une expérience de jeu inégalée.

Les avis nine casino sont unanimes : casino nine offre une variété de jeux uniques et des bonus exceptionnels. Ne manquez pas l’opportunité de bénéficier d’un code promo nine casino pour maximiser vos gains. Faites vos jeux et gagnez gros avec Nine Casino !

Paiements sécurisés et rapides

Chez Nine Casino, nous comprenons l’importance de la sécurité et de la rapidité des transactions. C’est pourquoi nous avons mis en place des méthodes de paiement modernes et sécurisées pour garantir que vos dépôts et retraits soient traités en toute confiance.

  • Méthodes de paiement variées: Que vous préfériez utiliser votre carte bancaire, un portefeuille électronique ou un service de transfert, Nine Casino offre une gamme de solutions pour répondre à vos besoins.
  • Sécurité renforcée: Nous utilisons des protocoles de cryptage avancés pour protéger vos informations personnelles et financières. Vous pouvez jouer en toute tranquillité, sachant que vos données sont en sécurité.
  • Retraits rapides: Grâce à notre système de traitement optimisé, les retraits sont généralement effectués dans les 24 heures. Plus besoin d’attendre des jours pour accéder à vos gains!

Pour profiter de ces avantages, il vous suffit de vous connecter à votre compte nine casino login et de choisir la méthode de paiement qui vous convient le mieux. Et n’oubliez pas, avec notre nine casino no deposit bonus et les code promo nine casino, vous pouvez commencer à jouer sans dépôt initial!

Pour plus d’informations, consultez nos nine casino avis et avis nine casino pour découvrir ce que nos joueurs pensent de notre casino en ligne.

Service clientèle 24/7

Chez Nine Casino, votre satisfaction est notre priorité absolue. Notre équipe de service clientèle est disponible 24 heures sur 24, 7 jours sur 7, pour répondre à toutes vos questions et résoudre vos problèmes rapidement. Que vous ayez besoin d’aide pour utiliser un code promo Nine Casino, pour vous connecter à votre compte via Nine Casino login, ou pour comprendre comment activer votre code bonus Nine Casino, nos experts sont là pour vous guider.

Nous savons que chaque joueur a des attentes uniques, c’est pourquoi nous nous engageons à fournir un service personnalisé et efficace. Consultez nos Nine Casino avis pour découvrir comment nous avons aidé d’autres joueurs à profiter pleinement de leur expérience sur Casino Nine. Les avis Nine Casino témoignent de notre dévouement à offrir un support clientèle de qualité supérieure.

Ne laissez pas un problème mineur gâcher votre expérience de jeu. Contactez notre service clientèle dès maintenant et profitez d’une assistance 24/7 pour toutes vos questions et préoccupations.

Promotions et offres spéciales

Profitez des offres exclusives disponibles sur Nine Casino. Découvrez notre code bonus Nine Casino pour bénéficier de réductions incroyables sur vos premiers dépôts. Ne manquez pas le code promo Nine Casino qui vous offre des avantages supplémentaires.

Pour les amateurs de jeux, le casino Nine propose également un bonus sans dépôt pour vous permettre de tester nos jeux sans risque. Connectez-vous dès maintenant sur Nine Casino login pour accéder à toutes ces promotions.

Consultez nine casino france également les avis Nine Casino pour découvrir les expériences des autres joueurs et tirer le meilleur parti de votre expérience sur notre plateforme. N’attendez plus, rejoignez Nine Casino dès aujourd’hui et profitez de nos offres spéciales exceptionnelles.

Programme de fidélité récompensant

Chez Nine Casino, nous valorisons chaque joueur. Notre programme de fidélité est conçu pour récompenser votre engagement. En participant à notre casino en ligne, vous accumulez des points qui peuvent être échangés contre des récompenses exclusives. Profitez de bonus supplémentaires, de tours gratuits et d’autres avantages exclusifs.

Niveau
Points requis
Récompenses

Bronze 1000 points Code bonus Nine Casino Argent 5000 points Nine Casino no deposit bonus Or 10000 points Code promo Nine Casino

Pour plus d’informations, consultez notre avis Nine Casino ou connectez-vous à votre compte Nine Casino login. Rejoignez-nous dès aujourd’hui et découvrez pourquoi Nine Casino est le choix numéro un des amateurs de jeux en ligne.

Responsabilité et divertissement garanti

Chez Nine Casino, nous croyons en l’importance de jouer de manière responsable tout en garantissant un divertissement de qualité. Voici quelques points clés pour vous aider à profiter pleinement de votre expérience de jeu en ligne :

  • Code bonus Nine Casino : Profitez de nos offres spéciales en utilisant votre code bonus Nine Casino pour maximiser vos gains.
  • Nine Casino Login : Assurez-vous de vous connecter régulièrement pour ne manquer aucune mise à jour ou promotion.
  • Casino Nine : Découvrez notre large sélection de jeux, conçus pour offrir un divertissement sans faille.
  • Avis Nine Casino : Lisez les avis des autres joueurs pour avoir une idée claire de l’expérience que nous offrons.
  • Nine Casino No Deposit Bonus : Essayez nos jeux sans risque avec notre bonus sans dépôt.
  • Nine Casino Avis : Nous valorisons vos retours et nous nous efforçons de nous améliorer en fonction de vos commentaires.

N’oubliez pas que le jeu doit rester un plaisir. Jouez de manière responsable et profitez de chaque moment chez Nine Casino.

Design and Develop by Ovatheme